# 第一阶段：构建JRE基础镜像
# 使用Amazon Corretto的JDK发行版。注：不要使用OpenJDK镜像，该镜像已不维护。
FROM amazoncorretto:21-alpine as corretto-jdk

# 按照必须的依赖，确保jlink可用
RUN apk add --no-cache binutils

# 构建一个全模块的JRE
RUN $JAVA_HOME/bin/jlink \
         --verbose \
         --add-modules ALL-MODULE-PATH \
         --strip-debug \
         --no-man-pages \
         --no-header-files \
         --compress=2 \
         --output /customjre

# 第二阶段：构建业务镜像
FROM alpine:latest
LABEL maintainer="信息中心研发组 <ic@itcast.cn>"

ENV JAVA_HOME=/jre
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# 修改时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 从基础镜像复制JRE
COPY --from=corretto-jdk /customjre $JAVA_HOME

# 添加非root用户
ARG APPLICATION_USER=appuser
RUN adduser --no-create-home -u 1000 -D $APPLICATION_USER && apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*

# 配置工作目录
RUN mkdir /app && \
    chown -R $APPLICATION_USER /app

USER 1000

# 复制应用jar文件
COPY --chown=1000:1000 ./*-start/target/*.jar /app/app.jar
WORKDIR /app

EXPOSE 8080
ENTRYPOINT [ "sh","-c","java -Djava.security.egd=file:/dev/./urandom -jar $JAVA_OPTS app.jar" ]
